package com.gaoxk.distributeReq;

import com.gaoxk.cxf.service.s30062000020.Rsp3006200002002Type;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.MethodParameter;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.ModelAndViewContainer;
import org.springframework.web.servlet.mvc.method.annotation.ViewNameMethodReturnValueHandler;

public class HandlerVoidMethod extends ViewNameMethodReturnValueHandler {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    @Override
    public void handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
        /*
         * 这里只处理了void返回值的方法，对于String返回值的方法则没有处理，原因是系统中可能还会用到springmvc的视图功能（例如jsp）
         * 如果说是前后分离的项目，springmvc层只提供纯接口的话，那么可以将下面代码全部删除，
         * 只写上一行  mavContainer.setRequestHandled(true);  即可
         */
        logger.info("guollllll");
        logger.info(returnType.getParameterType().toString());
        if (Rsp3006200002002Type.class == returnType.getParameterType()) {
            mavContainer.setRequestHandled(true);//这行代码是重点，它的作用是告诉其他组件本次请求已经被程序内部处理完毕，可以直接放行了
        } else {
            super.handleReturnValue(returnValue, returnType, mavContainer, webRequest);
        }
    }
}
